package com.ilearn.iodata.iolingo.service.metadata.core.edm.mapper.api;

import java.util.Set;

/**
 * Created by lyndon on 2018/5/29.
 */
public interface ManagedType<X> extends Type<X> {
    Set<Attribute<? super X, ?>> getAttributes();

    Set<Attribute<X, ?>> getDeclaredAttributes();

    <Y> SingularAttribute<? super X, Y> getSingularAttribute(String var1, Class<Y> var2);

    <Y> SingularAttribute<X, Y> getDeclaredSingularAttribute(String var1, Class<Y> var2);

    Set<SingularAttribute<? super X, ?>> getSingularAttributes();

    Set<SingularAttribute<X, ?>> getDeclaredSingularAttributes();

    <E> CollectionAttribute<? super X, E> getCollection(String var1, Class<E> var2);

    <E> CollectionAttribute<X, E> getDeclaredCollection(String var1, Class<E> var2);

    <E> SetAttribute<? super X, E> getSet(String var1, Class<E> var2);

    <E> SetAttribute<X, E> getDeclaredSet(String var1, Class<E> var2);

    <E> ListAttribute<? super X, E> getList(String var1, Class<E> var2);

    <E> ListAttribute<X, E> getDeclaredList(String var1, Class<E> var2);

    <K, V> MapAttribute<? super X, K, V> getMap(String var1, Class<K> var2, Class<V> var3);

    <K, V> MapAttribute<X, K, V> getDeclaredMap(String var1, Class<K> var2, Class<V> var3);

    Set<PluralAttribute<? super X, ?, ?>> getPluralAttributes();

    Set<PluralAttribute<X, ?, ?>> getDeclaredPluralAttributes();

    Attribute<? super X, ?> getAttribute(String var1);

    Attribute<X, ?> getDeclaredAttribute(String var1);

    SingularAttribute<? super X, ?> getSingularAttribute(String var1);

    SingularAttribute<X, ?> getDeclaredSingularAttribute(String var1);

    CollectionAttribute<? super X, ?> getCollection(String var1);

    CollectionAttribute<X, ?> getDeclaredCollection(String var1);

    SetAttribute<? super X, ?> getSet(String var1);

    SetAttribute<X, ?> getDeclaredSet(String var1);

    ListAttribute<? super X, ?> getList(String var1);

    ListAttribute<X, ?> getDeclaredList(String var1);

    MapAttribute<? super X, ?, ?> getMap(String var1);

    MapAttribute<X, ?, ?> getDeclaredMap(String var1);
}